
#ifndef INPUTINTCOM_H
#define INPUTINTCOM_H


#define keyPressed		'p'
#define keyHeld			'h'
#define keyReleased		'r'
#define keyNA			'n'


struct inputReturnData
{
	char status;
	float data;
	inputReturnData( char inStatus, float inData ) : status(inStatus), data(inData) { }
	bool down( ) const { return status == keyPressed || status == keyHeld; }
};

class InputInterface
{
public:
	virtual bool initialise() = 0;
	virtual void keyInput( bool down, int key ) = 0;

	virtual char getKeyStatus( int key ) = 0;
	virtual bool assignActionToKey( int action, int key ) = 0;
	virtual void removeAction( int action ) = 0;
	virtual void clearActionAssignments() = 0;
	virtual inputReturnData getActionInput( int action ) = 0;
	virtual void update() = 0;

//----------------------------------------------------------------------------

public:
	InputInterface() {}
	virtual ~InputInterface() { }

};


#endif
